import Vue from 'vue'
import Vuex from 'vuex'
// 引入vuex-logger,相当于是chrome vue-devtools
import createLogger from 'vuex/dist/logger'

Vue.use(Vuex)

const store = new Vuex.Store({
	state: {
		// 小程序启动时就初始化这里,storage=>cart
		cart: uni.getStorageSync('cart') || []
	},
	// state的计算属性
	getters: {
		getCart(state) {
			return state.cart
		}
	},
	mutations: {
		// 删除购物车已勾选的商品
		arrangeCart(state){
			// 更新
			state.cart = state.cart.filter(item => {
				// 满足条件:不勾选的商品
				return !item.checked
			})
		},
		// 购物车的操作需要更新到state.cart
		updateCart(state,goodsList){
			state.cart = goodsList.map(item=>{
				return{
					goodsId:item.goodsId,
					num:item.num,
					checked:item.checked
				}
			})
		},
		// 加入购物车逻辑
		add2Cart(state, goodsId) {
			let cart = state.cart

			// 从购物车数组里面找一个goodsId为当前商品的goodsId的对象
			let goods = cart.find(item => {
				return item.goodsId === goodsId
			})
			// 判断是否从来没添加到商品
			if (goods) {
				//非首次添加
				// num++,checked:true
				goods.num = goods.num + 1
				goods.checked = true
			} else {
				// 首次添加
				let newGoods = {
					goodsId: goodsId,
					num: 1,
					checked: true
				}
				state.cart = [newGoods, ...cart]
			}
		}
	},
	plugins: [createLogger()]
})

export default store
